package demo1;

// 接口的语法规则
// 接口中不能有方法的实现 除非是有一个静态方法 static 或者是 default 修饰的方法
// 这意味着只能有抽象方法
// 接口中的成员变量 默认都是 public static final 修饰的
// 类和接口之间 的关系  是一个类实现了这个接口
interface Shape {
    //    public void draw();
    void draw();
}

class Rect implements Shape {
    @Override
    // 必须要重写喔
    public void draw() {
        System.out.println("矩形");
    }
}

class Flower implements Shape {
    @Override
    public void draw() {
        System.out.println("❀");
    }
}

public class Test1 {
    public static void drawMap(Shape shape) {
        shape.draw();
    }

    public static void main(String[] args) {
        Shape shape1 = new Rect();
        Shape shape2 = new Flower();

        // 这里会发生向上转型 多态

        drawMap(shape1);
        drawMap(shape2);

        System.out.println("++++++++++++++++++++++++++++++++++++++");

        Shape[] shapes = {new Rect(), new Flower(), new Flower()};
        for (Shape shape : shapes) {
            shape.draw();
        }

    }

}
